package object;
/** Object的演示 */
public class ObjectDemo {
    public static void main(String[] args) {
       String s1 = new String("hello");
       String s2 = new String("hello");
       //String重写了equals方法,实际上是将
        /*
        *    public class String {

            public String toString() {
                return this.value.toString();
            }
        }*/
        System.out.println(s1.equals(s2));//true


        StringBuilder builder1 = new StringBuilder("hello");
        StringBuilder builder2 = new StringBuilder("hello");
        //StringBuilder没有重写equals，所以默认还是调用的Object类的equals方法
        System.out.println(builder1.equals(builder2));//fasle

        //s1和builder1类型不同,所以一定是false
        System.out.println(s1.equals(builder1));







        /*
            Object类的equals底层还是使用的==，比较的是地址
            没有参考意义,我们若想比较内容,则不能满足,所以需要重写equals


       Point p1 = new Point(100,200);
        Point p2 = new Point(100, 200);
        System.out.println(p1==p2);//false ==比较的是地址
        //因为Point重写了equals方法
        //所以此处调用的是重写之后的equals,
        System.out.println(p1.equals(p2));//false
        */

        /*
            输出引用变量时默认调用Object类的toString()方法
            该方法返回的字符串格式为：类的全称@hashcode值

        Point p = new Point(100,200);
        System.out.println(p);
        System.out.println(p.toString());

        String str = "这是一个点:"+p;//调用p的toString()方法将其转换为字符串
        System.out.println(str);//这是一个点:Point{x=100, y=200}
*/
    }
}
